Skip to content
Snippets Groups Projects
Select Git revision
  • a9815b1b5f59a84b6526a33bebdb86619e8234f6
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

Multiselect.vue

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    RenewalDialog.vue 2.26 KiB
    <template>
        <studip-dialog
            :title="$gettext('Verlängerungsanfrage bearbeiten')"
            :confirmText="$gettext('Speichern')"
            confirmClass="accept"
            :closeText="$gettext('Schließen')"
            closeClass="cancel"
            height="350"
            @close="$emit('close')"
            @confirm="updateRenewal"
        >
            <template #dialogContent>
                <form class="default" @submit.prevent="">
                    <label>
                        {{ $gettext('Fristverlängerung') }}
                        <select v-model="state">
                            <option value="declined">
                                {{ $gettext('ablehnen') }}
                            </option>
                            <option value="granted">
                                {{ $gettext('gewähren') }}
                            </option>
                        </select>
                    </label>
                    <label v-if="state === 'granted'">
                        {{ $gettext('neue Frist') }}
                        <DateInput v-model="date" class="size-l" :min="submissionDate" />
                    </label>
                </form>
            </template>
        </studip-dialog>
    </template>
    
    <script>
    import DateInput from '../layouts/CoursewareDateInput.vue';
    export default {
        props: ['renewalState', 'submissionDate'],
        components: {
            DateInput,
        },
        data: () => ({
            date: null,
            state: null,
        }),
        methods: {
            resetLocalVars() {
                this.date = this.submissionDate ?? null;
                this.state = this.renewalState;
            },
            updateRenewal() {
                const date = new Date(this.date);
                date.setHours(23);
                date.setMinutes(59);
                date.setSeconds(59);
                date.setMilliseconds(999);
    
                this.$emit('update', {
                    state: this.state,
                    date: this.state === 'granted' ? date || Date.now() : null,
                });
            },
        },
        mounted() {
            this.resetLocalVars();
        },
        watch: {
            submissionDate(newValue) {
                if (newValue !== this.date) {
                    this.resetLocalVars();
                }
            },
            renewalState(newValue) {
                if (newValue !== this.state) {
                    this.resetLocalVars();
                }
            },
        },
    };
    </script>