Compare commits

...

3 Commits

Author SHA1 Message Date
D. Berge
77258b12e9 Merge branch '62-service-desk-from-ss-om-magseisfairfield-com-bug-report' into 'devel'
Resolve "Service Desk (from ss.om@magseisfairfield.com): Bug report"

Closes #62

See merge request wgp/dougal/software!4
2020-10-15 17:20:30 +00:00
D. Berge
6896d8bc87 Change sequence renumbering behaviour.
By default, change just the number of the sequence
being edited. It is checked for conflict with other
planned sequences but not with anything already acquired.

If the user ticks the ‘shift all’ checkbox, then all
planned sequences are shifted by the same amount.
2020-10-15 19:07:27 +02:00
D. Berge
80b463fbb7 Change default sequence assignment for planned lines.
If there are other lines in the planner, we increment the
highest numbered sequence in the planner by one.

If there are no planned lines, we take the highest numbered
raw sequence and increment by one.
2020-10-15 19:05:14 +02:00
2 changed files with 57 additions and 9 deletions

View File

@@ -58,6 +58,11 @@
single-line single-line
> >
</v-text-field> </v-text-field>
<v-checkbox
v-model="shiftAll"
class="mt-0"
label="Shift all planned sequences"
></v-checkbox>
</template> </template>
</v-edit-dialog> </v-edit-dialog>
</template> </template>
@@ -320,6 +325,7 @@ export default {
queuedReload: false, queuedReload: false,
plannerConfig: null, plannerConfig: null,
shiftAll: false, // Shift all sequences checkbox
// Context menu stuff // Context menu stuff
contextMenuShow: false, contextMenuShow: false,
@@ -355,7 +361,11 @@ export default {
await this.shiftTimesAfter(item, delta); await this.shiftTimesAfter(item, delta);
await this.saveItem({sequence: item.sequence, key: 'ts1', value: ts1}); await this.saveItem({sequence: item.sequence, key: 'ts1', value: ts1});
} else if (oldVal.key == "sequence") { } else if (oldVal.key == "sequence") {
await this.shiftSequences(oldVal.value-item.sequence); if (this.shiftAll) {
await this.shiftSequences(oldVal.value-item.sequence);
} else {
await this.shiftSequence(item, oldVal.value);
}
} else if (item[oldVal.key] != oldVal.value) { } else if (item[oldVal.key] != oldVal.value) {
if (await this.saveItem(oldVal)) { if (await this.saveItem(oldVal)) {
item[oldVal.key] = oldVal.value; item[oldVal.key] = oldVal.value;
@@ -449,6 +459,38 @@ export default {
} }
}, },
async shiftSequence (item, newSequence) {
if (item.sequence == newSequence) {
// Nothing to do
return;
}
const conflict = this.items.find(i => i.sequence == newSequence)
if (conflict) {
this.showSnack([`Sequence ${newSequence} already exists`, "error"]);
} else {
// Cannot do this check at the moment as we would have to load the list of sequences.
// TODO We will do this after refactoring.
/*
if (this.sequences.find(i => i.sequence == newSequence)) {
this.showSnack([`Sequence ${newSequence} conflicts with a line that's already been acquired`, "warning"]);
}
*/
const url = `/project/${this.$route.params.project}/plan/${item.sequence}`;
const init = {
method: "PATCH",
headers: {"Content-Type": "application/json"},
body: {
sequence: newSequence,
name: null
} // Setting name to null causes it to be regenerated
}
await this.api([url, init]);
}
},
async shiftTimesAfter(item, delta) { async shiftTimesAfter(item, delta) {
const pos = this.items.indexOf(item)+1; const pos = this.items.indexOf(item)+1;
if (pos != 0) { if (pos != 0) {
@@ -546,7 +588,7 @@ export default {
: item; : item;
}, },
...mapActions(["api"]) ...mapActions(["api", "showSnack"])
}, },
async mounted () { async mounted () {

View File

@@ -19,14 +19,20 @@ async function getDistance (client, payload) {
} }
async function getSequence (client) { async function getSequence (client) {
// Get the next free sequence from planned data
// if there is any planned lines, if not get the
// next available from raw lines
const text = ` const text = `
SELECT max(sequence)+1 AS sequence WITH p AS (
FROM ( SELECT max(sequence) AS sequence
SELECT sequence FROM planned_lines
FROM raw_lines ),
UNION SELECT sequence r AS (
FROM planned_lines SELECT max(sequence) AS sequence
) t; FROM raw_lines
)
SELECT COALESCE(p.sequence, r.sequence)+1 AS sequence
FROM p, r;
`; `;
const res = await client.query(text); const res = await client.query(text);